﻿// See https://aka.ms/new-console-template for more information

using _27_DDD;
using _27_DDD.Models;
using Microsoft.EntityFrameworkCore.Metadata.Internal;
using System.Text.Json;
using System.Text.Json.Serialization;

//using var ctx = new MyDbContent();
//User u1 = new User("aggie1");
//u1.ChangePassword("1234567");
//ctx.Users.Add(u1);
//ctx.SaveChanges();


//{
//    // using var ctx = new MyDbContent();
//    var item= ctx.Users.FirstOrDefault(u => u.Id == 1);
//    Console.WriteLine(item.Remark);
//}



{
    //  builder.Property(p => p.monetaryUnit).HasConversion<String>() 
    // 没有加上面设置 枚举插入的0,1 int型
    // 加了上面设置   枚举插入的RMB,USD  字符串
    //using (var ctx = new MyDbContent())
    //{

    //    entity1 e1 = new entity1() { name = "aaa", monetaryUnit = MonetaryUnit.RMB };
    //    entity1 e2 = new entity1() { name = "bbb", monetaryUnit = MonetaryUnit.USD };
    //    ctx.Add(e1);
    //    ctx.Add(e2);
    //    ctx.SaveChanges();
    //}


    // 不管枚举插入的字符串（RMB，USD）还是int型(0,1)  返回数据的时候EFCore全部转换成 数字(0,1)
    //using (var ctx = new MyDbContent())
    //{
    //    var list = ctx.Entity1.Select(s=>s);
    //    foreach (var item in list)
    //    {
    //        Console.WriteLine(JsonSerializer.Serialize(item));
    //    }
    //}
}


{
    //  值对象插入
    //using (var ctx = new MyDbContent())
    //{
    //    Shop s = new Shop()
    //    {
    //        Name = "aggie",
    //        geo = new Geo(1, 2)
    //    };
    //    ctx.Add(s);
    //    ctx.SaveChanges();

    //}
}

{
    using (var ctx = new MyDbContent())
    {
        //Books b = new Books()
        //{
        //    title = new YuYan("你好", "hello"),
        //    body = new YuYan("我很好", "henhao")
        //};
        //ctx.Add(b);
        //ctx.SaveChanges();

        // var items = ctx.Books.Where(b => b.title.China == "你好" && b.title.English == "hello");
        var items = ctx.Books.Where(b => b.title == new YuYan("你好", "hello"));
        foreach (var item in items)
        {
            Console.WriteLine(JsonSerializer.Serialize(item));
        }
    }
}